package com.ykht.proj.activity.mq.producer;

import cn.hutool.core.util.StrUtil;
import com.ykht.proj.activity.mq.MqConfig;
import com.ykht.proj.activity.mq.init.Producer;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;



/**
 * 原生的生产者，不想改了，coupon服务用的时基于RocketMQTemplate的
 */
@Data
@Slf4j
@Component
public class ScheduledMsgProducer {

	@Resource
	private  Producer defaultMQProducer;
	@Resource
	private MqConfig mqConfig;

	public void sendOrderScheduledMsg(String order,Integer delayTimeLevel ){
		DefaultMQProducer producer = defaultMQProducer.getDefProducer();
		try {
			// 设置NameServer的地址
//			producer.setVipChannelEnabled(false);
			// 启动Producer实例
			Message message = new Message(mqConfig.getTopic(), StrUtil.utf8Bytes(order));
			// 设置延时等级3,这个消息将在10s之后发送(现在只支持固定的几个时间,详看delayTimeLevel)1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
			message.setDelayTimeLevel(delayTimeLevel);
			message.setKeys(order);
			// 发送消息
			producer.send(message);
			log.info("发送消息：{}",message.toString());
		} catch (Exception e) {
			e.printStackTrace();
			// 如果不再发送消息，关闭Producer实例。
			producer.shutdown();
		}
	}
}